
package carmadness.view;

/**
 * Szöveges renderer osztályok őse.
 * 
 * @author arpi
 * @version 1.0
 * @created 10-Apr-2010 2:32:38 PM
 */
public abstract class ConsoleRenderer extends Renderer
{
	/**
	 * Behúzás mértéke.
	 */
	private static int _indentLevel = 0;

	/**
	 * Behúzás mértékének növelése.
	 */
	public static void subSection()
	{
		_indentLevel += 1;
	}

	/**
	 * Behúzás mértékének csökkentése.
	 */
	public static void endSubSection()
	{
		_indentLevel += -1;
	}

	/**
	 * Visszatér egy n*2 hosszúságú, space-ekből álló stringgel (a behúzáshoz).
	 * 
	 * @param n
	 *            A behúzások száma.
	 * @return Egy n*8 hosszúságú, space-ekből álló string.
	 */
	private static String nSpace( int n )
	{
		StringBuilder sb = new StringBuilder( n * 8 );

		for ( int i = 0; i < n; ++i )
		{
			sb.append( "        " ); // 8 hosszúságú string
		}

		return sb.toString();
	}

	/**
	 * Konzolra írja a paraméterként kapott szöveget...
	 * 
	 * @param message
	 *            Formátum string.
	 * @param arguments
	 *            Argumentumok
	 */
	public static void print( String message, Object... arguments )
	{
		System.out.println( nSpace( _indentLevel ) + String.format( message, arguments ) );
	}
}
